package icu.qx.wm.service;

import java.util.List;
import java.util.Map;

import icu.qx.wm.domain.WmProductionMaterialReturn;
import icu.qx.wm.domain.WmReturnMaterialList;
import icu.qx.wm.dto.MaterialReturnDTO;
import icu.qx.wm.vo.*;

/**
 * 生产退料Service接口
 *
 * @author alize
 * &#064;date  2024-06-26
 */
public interface IWmProductionMaterialReturnService {
    /**
     * 查询生产退料
     *
     * @param pmrCode 生产退料主键
     * @return 生产退料
     */
    WmProductionMaterialReturn selectWmProductionMaterialReturnByPmrCode(String pmrCode);

    /**
     * 查询生产退料列表
     *
     * @param wmProductionMaterialReturn 生产退料
     * @return 生产退料集合
     */
    List<WmProductionMaterialReturn> selectWmProductionMaterialReturnList(WmProductionMaterialReturn wmProductionMaterialReturn);

    /**
     * 新增生产退料
     *
     * @param wmProductionMaterialReturn 生产退料
     * @return 结果
     */
    int insertWmProductionMaterialReturn(WmProductionMaterialReturn wmProductionMaterialReturn);

    /**
     * 修改生产退料
     *
     * @param wmProductionMaterialReturn 生产退料
     * @return 结果
     */
    int updateWmProductionMaterialReturn(WmProductionMaterialReturn wmProductionMaterialReturn);

    /**
     * 批量删除生产退料
     *
     * @param pmrCodes 需要删除的生产退料主键集合
     * @return 结果
     */
    int deleteWmProductionMaterialReturnByPmrCodes(String[] pmrCodes);

    // 查询工艺路线
    List<Map<String, String>> selectRouteCode();

    // 查询工序
    List<Map<String, String>> selectProcedureCode();

    /**
     * 查询生产退料物料清单列表
     *
     * @param wmReturnMaterialList 生产退料物料清单
     * @return 生产退料物料清单集合
     */
    List<WmReturnMaterialList> selectWmReturnMaterialList(WmReturnMaterialList wmReturnMaterialList);

    // 查询班组列表
    List<PbsWorkGroupVo> selectPbsWorkGroupList();

    // 查询生产工单
    List<ProWorkOrderVo> selectWorkOrder(ProWorkOrderVo proWorkOrderVo);

    // 查询工单任务
    List<ProWorkTaskVo> selectProWorkTaskList(ProWorkTaskVo proWorkTaskVo);

    // 查询任务负责人
    String[] selectTaskManager();

    // 查找物料
    List<MaterialListVo> selectMaterialList(MaterialListVo materialListVo);

    // 查找单位
    List<UnitTypeVo> selectUnitList();

    // 退料单入库
    int storeMaterialReturn(MaterialReturnDTO materialReturnDTO);
}
